package com.ssy.lingxi.message.utils;

import com.ssy.lingxi.message.enums.MessageNoticeEnum;
import com.ssy.lingxi.message.model.dto.NoticeTemplateDTO;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 消息模板工具类
 * @author ds
 * @version 2.0.0
 * @date 2021/12/21
 */
@Slf4j
public class MultiLanguageUtil {

    private static Map<String, NoticeTemplateDTO> noticeTemplateData = null;

    public MultiLanguageUtil(Map<String, NoticeTemplateDTO> templateDTOList) {
        if(templateDTOList!=null&&templateDTOList.size()>0){
            noticeTemplateData=templateDTOList;
        }
    }

    /**
     * 默认消息模板
     * @return
     */
    public static Map<String, NoticeTemplateDTO> getDefaultMessageTemplate(){
        return Arrays.stream(MessageNoticeEnum.values()).map(o -> {
            NoticeTemplateDTO dto = new NoticeTemplateDTO();
            dto.setMessageTemplateCode(o.name());
            dto.setBusinessType(o.getBusinessType());
            dto.setTitle(o.getTitle());
            dto.setTemplate(o.getTemplate());
            dto.setTarget(o.getTarget());
            dto.setAppUrl(o.getAppUrl());
            dto.setUrl(o.getUrl());
            return dto;
        }).collect(Collectors.toMap(NoticeTemplateDTO::getMessageTemplateCode, v->v,(v1, v2)->v1));
    }

    public static Map<String, NoticeTemplateDTO> getNoticeTemplateByCode(){
        //如果初始化失败，默认使用中文
        if(noticeTemplateData==null){
            log.warn("消息模板配置错误，将启动默认消息模板！！！");
            noticeTemplateData= getDefaultMessageTemplate();
        }
        return noticeTemplateData;
    }

    public static NoticeTemplateDTO getNoticeTemplateByCode(String templateCode){
        return noticeTemplateData.get(templateCode);
    }
}
